一、写出下列程序的执行结果:(每小题5分,共50分)
1、
#include
class sample
{
int i;
double d;
public:
void setdata(int n) {i=n;}
void setdata(double x) {d=x;}
void disp()
{
cout<<”i=”<
}
};
void main()
{
sample s;
s.setdata(10);
s.setdata(15.6);
s.disp();
}
答案:
2、
#include
double& fn(const double&pd)
{
static double ad=32;
ad+=pd;
cout<<”fn being called … the value is:”<
return ad;
}
void main()
{
double a=345.6;
double &pa=fn(a);
cout<
a=55.5;
fn(a);
cout<
}
答案:
3、
#include
class sample
{
public:
sample();
sample(int);
~sample();
void display();
protected:
int x;
};
sample::sample()
{
x=0;
cout<<”constructing normally\n”;
}
sample::sample(int m)
{
x=m;
cout<<”constructing with a number:”<
}
sample::~sample()
{
cout<<”destructing\n”;
}
void sample::display()
{
cout<<”display a number:”<
}
void main()
{
sample obj1;
sample obj2(20);
obj1.display();
obj2.display();
}
答案:
4、
#include
class complex
{
public:
complex(double ,double );
complex(complex&);
complex();
complex operator +(complex&);
complex& operator =(complex&);
void display();
protected:
double real;
double image;
};
complex::complex(double x,double y)
{ real=x,image=y;}
complex::complex(complex& x)
{
cout<<”Runing copy constructor\n”
real=x.real;
image=x.image;
}
complex::complex()
{real=image=0.0;}
complex complex::operator +(complex& x)
{
return complex(real+x.real,image+x.image);
}
complex& complex::operator =(complex&x)
{
cout<<”Runing assign operator\n”;
real+=x.real;
image+=x.image;
return *this;
}
viod complex::display()
{
cout<
}
void main()
{
complex c1(2,5);
complex c2(c1);
complex c3;
c3=c1+c2;
c3.display();
}
答案:
5、
#include
template T>
class sample
{
public:
sample(){};
sample(T x){n=x;}
sample<T>& operator +(const sample<T>&);
void disp(){cout<<”n=”<
protected:
T n;
};
template T>
sample<T> & sample<T>::operator +(const sample<T> &s)
{
static sample<T> temp;
temp.n=n+s.n;
return temp;
}
void main()
{
sample<int> s1(10),s2(20),s3;
s3=s1+s2;
s3.disp();
}
答案:
6、
#include
class base
{
int n;
public:
base(int a)
{
cout<<”constructing base class with a number=”<
n=a;
}
~base()
{ cout<<”destructing base class”< }
};
class derive:public base
{
int m;
public:
derive(int a,int b):base(a)
{
cout <<”constructing derive class with a number=”<
}
~derive()
{ cout<<”destructing derive class”<
};
void main()
{
derive s(1,2);
}
答案:
7、
# include
class vehicle
{
int wheels;
float weight;
public:
virtual void message()
{cout<<”vehicle message\n”;}
};
class car:public vehicle
{
int passengers;
public:
void message(){
cout<<”car message\n”;}
};
class truck:public vehicle
{
int goods;
public:
void message(){
cout<<”truck message\n”;}
};
void main()
{
vehicle obj,*ptr;
car obj1;
truck obj2;
ptr=&obj;
prt->message();
ptr=&obj1;
ptr->message();
ptr=&obj2;
ptr->message()
}
答案:
8、
#include
void fc()
{
try
{throw “sos”;}
catch(int)
{cout<<”sos int”<
try{
throw 1;}
catch(const char * p){cout<<”sos string”<
}
void fb()
{
int *q=new int[100];
try{fc();}
catch(…){
delete []q;
throw;
}
}
void fa()
{
int *p=new int[100];
try{fb();}
catch(…){
delete []p;
throw;
}
}
void main()
{
try{fa();}
catch(…)
{cout<<”an error occurred while running”<
}
答案:
9、
#include
#include
class studentid
{
public:
studentid(int id=0)
{
value=id;
cout<<”Assigning student id”<
}
~studentid()
{
cout<<”destructing id”<
}
protected:
int value;
};
class student
{
public:
student(char *pname=”noname”,int ssid=0):id(ssid)
{
cout <<”constructing student”<
strcpy(name,pname);
name[sizeof(name)-1]=’\0’;
}
~student()
{
cout<<”destructing student”<
}
protected:
char name[20];
studentid id;
};
void main()
{
student s(“randy”,9818);
}
答案:
10、
#include
#include
class sample
{
public:
sample(){cout<<”constructing object\n”;}
~sample(){cout<<”destructing object\n”;}
protected:
int x;
};
void main()
{
sample * p1, *p2;
p1=new sample;
p2=(sample *) malloc(sizeof(sample));
delete p1;
free((void *) p2);
}
答案: